Advances in networking technology have fostered a move toward centralization of computational resources. In particular, desktop personal computers are being replaced by network-connected mobile devices and thin clients that provide a user interface and display functions, with a portion of processing, storage, and memory resources provided remotely by datacenters over a network connection.
The datacenters generally provide these resources using one or more computer systems that act as hosts for application programs, server programs, or virtual machines operated by clients. Efficient operation of a datacenter involves properly selecting and configuring host computer systems that are able to meet the demands of a client's applications and programs at a reasonable cost. If the datacenter is unable to provide enough computational resources during times when demand for computational resources is high, performance of client applications and programs will be impaired. If the datacenter installs excessive computational resources where demand is low, the additional resources will be underutilized and increase the cost of operating the datacenter.